function addEventListener(el, type, handler, selector) {
  // 判断
  if (typeof el === "string") {
      el = document.querySelector(el);
  }
  // 传入实际要触发事件元素
  if (selector) {
      // 给父元素绑定事件
      el.addEventListener(type, function (e) {
          // 获取实际事件源对象
          const target = e.target;
          // 选择器匹配对应元素
          if (target.matches(selector)) {
              // 执行处理函数传入上下文对象和事件对象
              handler.call(target, e);
          }
      });
  } else {
      el.addEventListener(type, handler);
  }
}